package net.entelijan.cobean.tree;

import java.awt.Component;
import java.util.List;

import javax.swing.tree.DefaultTreeCellRenderer;

/**
 * TODO Write a comment 
 *
 * Remark: It makes no sense to introduce a generic parameter for 
 * the model (Object model in getTreeCellRendererComponent) because this interface
 * is also used for heterogenious tree level descriptions where 
 * every level has a different type.  
 */
public interface ITreeLevelDescription {

	public <T> List<T> getChildren(T object);

	public ITreeLevelDescription getChildDescription();

	public Component getTreeCellRendererComponent(Object model,
			DefaultTreeCellRenderer defaultComp, boolean sel, boolean expanded,
			boolean leaf, int row, boolean hasFocus);

}